﻿IF EXISTS (SELECT * FROM sysobjects WHERE type = 'P' AND name = 'ReporteGraficoCompras')
	BEGIN
		DROP  Procedure  ReporteGraficoCompras
	END

GO

CREATE Procedure ReporteGraficoCompras
	(
		@FechaDesde datetime,
		@FechaHasta datetime,
		@ProveedorID int = NULL,
		@InsumoID int = NULL
	)
AS
BEGIN
	SELECT     
		SUM(dbo.DetCompraAlmacenamiento.cantidad) AS Cantidad, 
		dbo.Insumos.nombre AS Insumo, 
		CASE
			WHEN MONTH(dbo.Compras.fechaEmision) = 1 THEN 'Enero'
			WHEN MONTH(dbo.Compras.fechaEmision) = 2 THEN 'Febrero'
			WHEN MONTH(dbo.Compras.fechaEmision) = 3 THEN 'Marzo'
			WHEN MONTH(dbo.Compras.fechaEmision) = 4 THEN 'Abril'
			WHEN MONTH(dbo.Compras.fechaEmision) = 5 THEN 'Mayo'
			WHEN MONTH(dbo.Compras.fechaEmision) = 6 THEN 'Junio'
			WHEN MONTH(dbo.Compras.fechaEmision) = 7 THEN 'Julio'
			WHEN MONTH(dbo.Compras.fechaEmision) = 8 THEN 'Agosto'
			WHEN MONTH(dbo.Compras.fechaEmision) = 9 THEN 'Septiembre'
			WHEN MONTH(dbo.Compras.fechaEmision) = 10 THEN 'Octubre'
			WHEN MONTH(dbo.Compras.fechaEmision) = 11 THEN 'Noviembre'
			WHEN MONTH(dbo.Compras.fechaEmision) = 12 THEN 'Diciembre'
		END AS Mes
	FROM dbo.DetallesCompras 
	INNER JOIN dbo.DetCompraAlmacenamiento ON dbo.DetallesCompras.compraID = dbo.DetCompraAlmacenamiento.compraID AND dbo.DetallesCompras.loteID = dbo.DetCompraAlmacenamiento.loteID 
	INNER JOIN dbo.Lotes ON dbo.DetallesCompras.loteID = dbo.Lotes.loteID 
	INNER JOIN dbo.Insumos ON dbo.Lotes.insumoID = dbo.Insumos.insumoID 
	INNER JOIN dbo.Compras ON dbo.DetallesCompras.compraID = dbo.Compras.compraID
	WHERE (dbo.Compras.estado = 'R') AND
		(dbo.Compras.fechaEmision >= @FechaDesde AND dbo.Compras.fechaEmision <= @FechaHasta) AND
		CASE 
			WHEN @ProveedorID IS NULL THEN 1
			WHEN @ProveedorID = dbo.Compras.proveedorID THEN 1
			ELSE 0
		END = 1 AND
		CASE 
			WHEN @InsumoID IS NULL THEN 1
			WHEN @InsumoID = dbo.Insumos.insumoID THEN 1
			ELSE 0
		END = 1
	GROUP BY dbo.Insumos.nombre, YEAR(dbo.Compras.fechaEmision), MONTH(dbo.Compras.fechaEmision)
END

GO


GRANT EXEC ON ReporteGraficoCompras TO PUBLIC

GO


